package com.software.singleton;

public class SingleTon {
    //1，饿汉方式 把生成对象的实践点提前 提前到把 SingleTon放入到栈顶
    private static SingleTon singleTon = new SingleTon();

    //单例模式的第一步 构造函数私有化 目的就是使外部程序不能直接创建对象  不能new
    private SingleTon() {
        //防止反射攻击
        if (singleTon != null) {
            throw new RuntimeException("你丫是黑客别想反射攻击我");
        }
    }

    //第二部 就是要 把对象 在内部生成
    //1、懒汉模式  线程不安全

//    public static SingleTon getInstance() {
//        if (singleTon == null) //先判断对象是否存在 如果存在就不去生成对象
//            singleTon = new SingleTon(); //如果不存在那么久new 第一次也是唯一的一次
//            // 在多线程的时候出现了错误 线程不安全
//        return singleTon;
//    }

    //2、饿汉模式  线程安全
    public static SingleTon getInstance() {
        return singleTon;
    }
}
